﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Entidades;
using Logica;
using Logica.Comandos.AseguradoraCommand;
using Logica.Comandos.Lugar;
using Logica.Fabricas;
using SchadenEscritorio.Contratos;

namespace SchadenEscritorio.Presentadores
{
    /// <summary>
    /// Presentador de la Vista AgregarSucursal
    /// </summary>
    public class PresentadorAgregarAseguradora : PresentadorLugar
    {
        #region Atributos
        private IContratoAgregarEmpresa _vista;
        private List<Sucursal> _lista;
        #endregion

        #region Constructor
        
        public PresentadorAgregarAseguradora(IContratoAgregarEmpresa vista)
        {
            _vista = vista;
            Vista = _vista;
            _lista = new List<Sucursal>();
        }

        #endregion

        #region Metodos

        /// <summary>
        /// agrega los datos de una sucursal en datagridview
        /// </summary>
        public void AgregarSucursal()
        {

            _vista.Lista.Rows.Add(_vista.Estado.Text,_vista.Ciudad.Text,_vista.Urbanizacion.Text,
                _vista.Calle.Text,_vista.Edificio.Text,_vista.Piso.Text,_vista.Telefono1.Text,
                _vista.Telefono2.Text);
            
            _vista.Lista.Visible = true;

            Sucursal miSucursal = FabricaEntidades.ObtenerSucursal();

            miSucursal.Direccion = ObtenerLugar();
            miSucursal.Telefono1 = _vista.Telefono1.Text;
            miSucursal.Telefono2 = _vista.Telefono2.Text;
            miSucursal.Tipo = _vista.Principal.Checked ?
                _vista.Principal.Text : _vista.Secundario.Text;
            _lista.Add(miSucursal);
        }

        /// <summary>
        /// metodo que se encarga de las inicializaciones necesarias para la vista
        /// </summary>
        public void CargarPagina()
        {
           
            CargarEstados();
            _vista.LetraRif.Items.Clear();
            _vista.LetraRif.Items.Add('V');
            _vista.LetraRif.Items.Add('E');
            _vista.LetraRif.Items.Add('J');
            _vista.LetraRif.Items.Add('P');
            _vista.LetraRif.Items.Add('G');

            _vista.LetraRif.SelectedIndex = 0;
        }
        
        /// <summary>
        /// metodo que recolecta todos los datos del formulario para almacenarlos
        /// </summary>
        public void Guardar()
        {
            Aseguradora aseguradora = FabricaEntidades.ObtenerAseguradora();
            Comando comando = FComandos.ComandoAseguradora().Agregar();
            aseguradora.Sucursales = _lista;
            aseguradora.Nombre = _vista.Nombre.Text.ToLower();
            aseguradora.LetraRif = (char) _vista.LetraRif.SelectedItem;
            aseguradora.Telefono = _vista.Telefono.Text;
            aseguradora.Rif = long.Parse(_vista.Rif.Text);

            ((ComandoCrearAseguradora) comando).Ejecutar(aseguradora);
            DialogResult result = MessageBox.Show("Aseguradora Agregada Con Exito!!", "OJO", MessageBoxButtons.OK);
            if (result == DialogResult.OK)
            {

                _vista.MiVentana.Close();
                new Principal().Show();
            } 
        }
        #endregion
    }
}
